//package com.lx.jobFlowDemo;
//
//import org.springframework.batch.core.Job;
//import org.springframework.batch.core.Step;
//import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
//import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
//import org.springframework.batch.core.job.builder.FlowBuilder;
//import org.springframework.batch.core.job.flow.Flow;
//import org.springframework.batch.repeat.RepeatStatus;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
///**
// * （1）flow是一个Step的集合，他规定了Step与Step之间的转换关系;
// * （2）创建Flow可以达到复用的效果，让其在不同的Job之间进行复用;
// * （3）使用FlowBuilder去创建一个Flow,他和Job类似，使用start(),next()以及end()来运行flow;
// * @author lixing
// * @date 2021/7/11 21:39
// */
//@Configuration
//public class JobFlowConfiguration2 {
//
//    @Autowired
//    private JobBuilderFactory jobBuilderFactory;
//
//    @Autowired
//    private StepBuilderFactory stepBuilderFactory;
//
//    @Bean
//    public Step jobFlowStep1() {
//        return stepBuilderFactory.get("jobFlowStep1")
//                .tasklet((stepContribution, chunkContext) -> {
//                    System.out.println("Hello jobFlowStep1  ");
//                    return RepeatStatus.FINISHED;
//                }).build();
//    }
//
//    @Bean
//    public Step jobFlowStep2() {
//        return stepBuilderFactory.get("jobFlowStep2")
//                .tasklet((stepContribution, chunkContext) -> {
//                    System.out.println("Hello jobFlowStep2");
//                    return RepeatStatus.FINISHED;
//                }).build();
//    }
//
//    @Bean
//    public Step jobFlowStep3() {
//        return stepBuilderFactory.get("jobFlowStep3")
//                .tasklet((stepContribution, chunkContext) -> {
//                    System.out.println("Hello jobFlowStep3");
//                    return RepeatStatus.FINISHED;
//                }).build();
//    }
//
//    @Bean
//    public Flow jobFlowDemo1(){
//        return new FlowBuilder<Flow>("jobFlowDemo1")
//                .start(jobFlowStep1())
//                .next(jobFlowStep2())
//                .build();
//    }
//
//    @Bean
//    public Job JobFlowDemoJob1(){
//        return jobBuilderFactory.get("JobFlowDemoJob1")
//                .start(jobFlowDemo1())
//                .next(jobFlowStep3()).end()
//                .build();
//    }
//}
